package com.catazzz.springbootstudy.common.elastic;

import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;

/**
 * @作者: Tao
 * @日期: 2025/1/13
 * @时间: 16:21
 * @描述: 文章类，用于表示一篇文章的结构 <br><pre>
 *
 * 使用@Document注解标记该类为Elasticsearch的文档，指定索引名为"article"，并设置不自动创建索引
 */
@Data
@Document(indexName = "article", createIndex = false)
public class Article {

    /**
     * 文章的唯一标识符
     * 使用@Id注解标记该字段为文档的主键
     */
    @Id
    private Long id;

    /**
     * 文章的作者
     * 使用@Field注解指定字段在Elasticsearch中的属性，设置存储、搜索和分析器
     * 存储（store）：字段值是否存储在索引中，以便直接返回
     * 搜索分析器（searchAnalyzer）：用于搜索时的文本分析
     * 分析器（analyzer）：用于索引时的文本分析
     * 这里使用"ik_smart"分析器，适用于中文分词
     */
    @Field(store = true, searchAnalyzer = "ik_smart", analyzer = "ik_smart")
    private String author;

    /**
     * 文章的标题
     * 同样使用@Field注解设置字段属性，理由同上
     */
    @Field(store = true, searchAnalyzer = "ik_smart", analyzer = "ik_smart")
    private String title;

    /**
     * 文章的内容
     * 使用@Field注解设置字段属性，以便对文章内容进行有效的搜索和分析
     */
    @Field(store = true, searchAnalyzer = "ik_smart", analyzer = "ik_smart")
    private String content;
}

